Proxy servers are well known network components that function as intermediaries between a client and an origin server. Proxy servers are widely used in data networks for performance improvement, content filtering, and network security. A proxy server will examine the contents of the resource request received from the client before passing it on, if needed, to the origin server. Normally a client is explicitly configured to use proxy servers, but in some network configurations the client is unaware of the presence of the proxy server.
Depending on the communication protocols used, not all messages exchanged between the client and the origin server are available to the proxy server. If the message that is not available to the proxy server contains state information related to resource being accessed or the identity of the client, then the state information maintained by the proxy server will be incomplete. Under such conditions, when the proxy server requests resources on the behalf the client, it will not be able to supply all information required for the origin server to retrieve the resources, thus resulting in a failure to deliver the requested resources to the client. In certain cases, this lack of state information (in the request sent by the proxy server) can cause the origin server to prompt the client to request the resources again. Since the proxy server lacks the information required by the origin server, an indefinite request loop may result.
In order to avoid indefinite request loops resulting from lack of state information, for example, all access to a specific origin server which requires state information can be bypassed. Such an approach, however, can be time consuming and unreliable. First, the client must be configured to bypass the proxy server for accesses to origin servers that require state information. The configuration is typically performed by a network operator, which can be very time-consuming and can further result in productivity disruptions. Additionally, origin servers are continually added, changed, and deleted. This can result in very time consuming efforts by the network operator to maintain an up-to-date list of such origin servers. Based on the foregoing, there is a need for an approach for automatically bypassing proxy servers for known origin servers, and automatically maintaining/updating the list of such origin servers.